* A wrapper to ensure the doubles we fwrite are in correct endianness.
*/
-void
-le_fwrite64(void *ptr, int sz, int ct, FILE *stream)
+static void
+le_fwrite_double(double d, FILE *stream)
{
unsigned char cbuf[8];
-
- if ((sz != 8) || (ct != 1)) {
- fatal(MYNAME ": Bad internal arguments to le_fwrite64.\n");
- }
-
- le_read64(cbuf, ptr);
+ le_write_double(cbuf,d);
fwrite(cbuf, 8, 1, stream);
}
-void
-le_fread64(void *ptr, int sz, int ct, FILE *stream)
+static double
+le_fread_double( FILE *stream)
{
unsigned char cbuf[8];
-
fread(cbuf, 8, 1, stream);
- le_read64(ptr, cbuf);
+ return le_read_double(cbuf);
}
static void
fread(tbuf, 1, 1, mps_file); /* altitude validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_altitude,sizeof(mps_altitude),1,mps_file);
+ mps_altitude = le_fread_double(mps_file);
}
else {
mps_altitude = unknown_alt;
- le_fread64(tbuf,sizeof(mps_altitude),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
mps_readstr(mps_file, wptdesc, sizeof(wptdesc));
fread(tbuf, 1, 1, mps_file); /* proximity validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_proximity,sizeof(mps_proximity),1,mps_file);
+ mps_proximity = le_fread_double(mps_file);
}
else {
mps_proximity = unknown_alt;
- le_fread64(tbuf,sizeof(mps_proximity),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
fread(tbuf, 4, 1, mps_file); /* display flag */
fread(tbuf, 1, 1, mps_file); /* depth validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_depth,sizeof(mps_depth),1,mps_file);
+ mps_depth = le_fread_double( mps_file );
}
else {
mps_depth = unknown_alt;
- le_fread64(tbuf,sizeof(mps_depth),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
if ((mps_ver == 4) || (mps_ver == 5)) {
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_altitude, 8 , 1, mps_file);
+ le_fwrite_double( mps_altitude, mps_file );
}
if (wpt->description) fputs(ascii_description, mps_file);
fwrite(zbuf, 1, 1, mps_file); /* NULL termination */
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_proximity, 8 , 1, mps_file);
+ le_fwrite_double( mps_proximity, mps_file );
}
le_write32(&display, display);
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_depth, 8 , 1, mps_file);
+ le_fwrite_double(mps_depth, mps_file);
}
fwrite(zbuf, 2, 1, mps_file); /* unknown */
fread(tbuf, 1, 1, mps_file); /* altitude validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_altitude,sizeof(mps_altitude),1,mps_file); /* max alt of the whole route */
+ mps_altitude = le_fread_double(mps_file);
}
else {
mps_altitude = unknown_alt;
- le_fread64(tbuf,sizeof(mps_altitude),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
fread(&lat, 4, 1, mps_file);
fread(tbuf, 1, 1, mps_file); /* altitude validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_altitude,sizeof(mps_altitude),1,mps_file); /* min alt of the whole route */
+ mps_altitude = le_fread_double(mps_file);
}
else {
mps_altitude = unknown_alt;
- le_fread64(tbuf,sizeof(mps_altitude),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
}
fread(tbuf, 1, 1, mps_file); /* altitude validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_altitude,sizeof(mps_altitude),1,mps_file);
+ mps_altitude = le_fread_double(mps_file);
}
else {
mps_altitude = unknown_alt;
- le_fread64(tbuf,sizeof(mps_altitude),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
/* with MapSource routes, the real waypoint details are held as a separate waypoint, so copy from there
fread(tbuf, 1, 1, mps_file); /* altitude validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_altitude,sizeof(mps_altitude),1,mps_file);
+ mps_altitude = le_fread_double( mps_file );
}
else {
mps_altitude = unknown_alt;
- le_fread64(tbuf,sizeof(mps_altitude),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
}
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&maxalt, 8 , 1, mps_file);
+ le_fwrite_double(maxalt, mps_file);
}
lat = GPS_Math_Deg_To_Semi(minlat);
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&minalt, 8 , 1, mps_file);
+ le_fwrite_double(minalt, mps_file);
}
le_write32(&rte_datapoints, rte_datapoints);
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_altitude, 8 , 1, mps_file);
+ le_fwrite_double(mps_altitude, mps_file );
}
/* output end point 2 */
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_altitude, 8 , 1, mps_file);
+ le_fwrite_double(mps_altitude, mps_file);
}
if (rtewpt->latitude > prevRouteWpt->latitude) {
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&maxalt, 8 , 1, mps_file);
+ le_fwrite_double(maxalt, mps_file);
}
/* output min coords of the link */
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&minalt, 8 , 1, mps_file);
+ le_fwrite_double(minalt, mps_file );
}
}
fread(tbuf, 1, 1, mps_file); /* altitude validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_altitude,sizeof(mps_altitude),1,mps_file);
+ mps_altitude = le_fread_double( mps_file );
}
else {
mps_altitude = unknown_alt;
- le_fread64(tbuf,sizeof(mps_altitude),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
fread(tbuf, 1, 1, mps_file); /* date/time validity */
fread(tbuf, 1, 1, mps_file); /* depth validity */
if (tbuf[0] == 1) {
- le_fread64(&mps_depth,sizeof(mps_depth),1,mps_file);
+ mps_depth = le_fread_double(mps_file );
}
else {
mps_depth = unknown_alt;
- le_fread64(tbuf,sizeof(mps_depth),1, mps_file);
+ fseek( mps_file, 8, SEEK_CUR );
}
thisWaypoint = waypt_new();
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_altitude, 8 , 1, mps_file);
+ le_fwrite_double(mps_altitude, mps_file);
}
if (t > 0) { /* a valid time is assumed to > 0 */
else {
hdr[0] = 1;
fwrite(hdr, 1 , 1, mps_file);
- le_fwrite64(&mps_depth, 8 , 1, mps_file);
+ le_fwrite_double(mps_depth, mps_file );
}
}